﻿using System;
using System.Text;

namespace RpcHelper.Reflection
{
    public interface IReflectionProperty
    {
        string Name { get; }

        Type Type { get; }
        bool IsObject
        {
            get;
        }
        bool IsRead { get; }

        bool IsWrite { get; }
        object GetValue(object source);
        bool IsChange(object source, object other);
        bool IsChange(IReflectionProperty otherPro, object source, object other);
        void SetValue(object source,object obj);

        bool IsEquals(IReflectionProperty otherPro, object source, object other);
        bool IsEquals(object source, object other);

        void ToString(object source, StringBuilder str);
    }
}